![]() |
![]() |
![]() |
|
Adding Enemies All shooters need something to shoot at. In this case we opt for those poor aliens again. They may have come to visit us with a message of peace, but our player is interested only in target practice. |

|
The first step is to load the models for our enemy objects: rem TUT7A rem Load models for enemies EneObj=11 for ene=EneObj to EneObj+4 load object "models\enemy\H-Alien Psionic-Idle.x",ene append object "models\enemy\H-Alien Psionic-Die.x", ene, total object frames(ene)+1 position object ene,2,2,4 loop object ene,0,25 next eneNot forgetting the sounds we will need to give our enemies a realistic presence within the game. With additional use of 3D sounds and a scary alien breathing sound we can create the creepy effect of "what"s just around the corner" for our game: rem TUT7B EnemySnd=11 : load 3dsound "sounds\enemy.wav",EnemySnd EnemygunSnd=12 : load 3dsound "sounds\enemygun.wav",EnemygunSnd EnemydieSnd=13 : load 3dsound "sounds\enemydie.wav",EnemydieSndNow we have loaded our enemy media, we must control them within our game. We must control each enemy, ensuring we can move, rotate, handle gravity and play 3D sound for them: rem TUT7C rem Variable for finding closest enemy cdist#=9999.99 rem Handle enemies within world for ene=EneObj to EneObj+4 rem If enemy alive if object visible(ene)=1 rem Kill this enemy killenemy=0 rem Move enemy on a slow curve for appearance of intelligence if object angle z(ene)=0 yrotate object ene,wrapvalue(object angle y(ene)+2) endif if object angle z(ene)=1 yrotate object ene,wrapvalue(object angle y(ene)-2) endif if object angle z(ene)=2 move object ene,0.05 else move object ene,0.02 endif rem Switch direction of curve based on a random value if rnd(200)=1 then zrotate object ene,rnd(1) rem Handle gravity for enemy position object ene,object position x(ene),object position y(ene)-0.01,object position z(ene) rem Work out angle and distance between enemy and player dx#=camera position x(0)-object position x(ene) dy#=camera position y(0)-object position y(ene) dz#=camera position z(0)-object position z(ene) dist#=abs(sqrt(abs(dx#*dx#)+abs(dy#*dy#)+abs(dz#*dz#))) viewa#=wrapvalue(atanfull(dx#,dz#)) obja#=wrapvalue(object angle y(ene)) if viewa#>180 then viewa#=viewa#-360 if obja#>180 then obja#=obja#-360 rem Closest enemy emits the enemy sound if dist#To make sure that our aliens appear creepy, we will constantly play their presence sound effect, and scale the 3D sound listener so you only hear them when they are very close to the player: rem TUT7D rem Start the enemy presence sound loop sound EnemySnd scale listener 0.1 CLICK HERE TO GO TO THE MAIN MENU |